急!!!!求数据结构"二叉树前序、中序非递归遍历"

来源:百度知道 编辑:UC知道 时间:2024/05/09 10:48:12
二叉树前序、中序非递归遍历

1、预习要求:二叉树结构定义。
2、实验目的:
(1)了解二叉树结构遍历概念;
(2)理解二叉树二种不同遍历过程;
(3)掌握二叉树遍历算法程序。
3、实验内容及要求:
(1)建立包含10个结点的二叉树(树结构和数据元素的值由自己设定);
(2)完成二叉树非递归遍历二个程序;
(3)给出程序和每种遍历程序的结果。

中序非递归遍历的算法思路
void
inorder(struct tnode *tree)
INISTACK(s);/*将栈s置为空栈*/
PUSH(s,tree);/*将指向树根的指针压入栈*/
while(! EMPTY(s)) /*当栈s非空时循环执行*/
{

while(GETTOP(s))!=NULL)
PUSH(s,GETTOP(s)->lchild);
/*将各级左子树的根指针压入栈,直到左子树为空*/
POP(s);
if(! EMPTY(s))
{
p=GETTOP(s);
visite(p->data);/*访问栈顶元素*/
POP(s); /*退栈*/
PUSH(s,p->rchild); /*将原栈顶的右孩子入栈*/
}
}
}
先序的如上,略加改动即可
有不对的地方还请指出